package br.com.sistemasaude.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;

import br.com.sistemasaude.bean.Atendimento;
import br.com.sistemasaude.bean.Material;
import br.com.sistemasaude.bean.RelMatAtend;
import br.com.sistemasaude.dao.AtendimentoDAO;
import br.com.sistemasaude.dao.AtendimentoDAOImpl;
import br.com.sistemasaude.dao.MaterialDAO;
import br.com.sistemasaude.dao.MaterialDAOImpl;
import br.com.sistemasaude.dao.RelMatAtendDAO;
import br.com.sistemasaude.dao.RelMatAtendDAOImpl;

public class RelMaterialAtendController {
	
	private List<SelectItem> listaMaterial = new ArrayList<SelectItem>();
	
	private String material;
	private int quantidade;
	private int idAtendimento;
	private List<Material> materialUtilizado = new ArrayList<Material>();
	
	
	public RelMaterialAtendController(){
		preencheComboMaterial();
	}
	
	
	
	public void preencheMaterialUsado(){
		 RelMatAtendDAO relMatAtendDAO = new RelMatAtendDAOImpl();
		 AtendimentoDAO atendimentoDAO = new AtendimentoDAOImpl();
		 Atendimento anted = atendimentoDAO.buscar(this.idAtendimento);
		 if(anted!=null){
			 materialUtilizado = relMatAtendDAO.retornaMateriais(anted);
		 }
	}
	
	
	public void preencheComboMaterial(){
	
		MaterialDAO materialDAO = new MaterialDAOImpl();
		List<Material> listMaterial = materialDAO.listar();
		/*lista de Produtos*/
		for(Material material : listMaterial){			
			listaMaterial.add(new SelectItem(material.getDescricao()));
		}
	}
	
	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
        String agend;
        if(request.getParameter("id_atendimento")!=null){
        	 agend = request.getParameter("id_atendimento").toString();
        	 this.idAtendimento = Integer.parseInt(agend);
        }
        
        Atendimento atend;
        
        AtendimentoDAO atendimentoDAO = new AtendimentoDAOImpl();
        atend = atendimentoDAO.buscar(idAtendimento);
        
        Material mat;
        MaterialDAO materialDAO = new MaterialDAOImpl();
        mat = materialDAO.localizaMaterial(this.material);
        
        if(mat.getQuantidade()>0){

        RelMatAtend relMatAtend = new RelMatAtend();
        relMatAtend.setQuantidade(this.quantidade);
        relMatAtend.setTbAtendimento(atend);
        relMatAtend.setTbMaterial(mat);
        
        RelMatAtendDAO relMatAtendDAO = new RelMatAtendDAOImpl();
        relMatAtendDAO.salvar(relMatAtend);
      
        //Atualiza estoque de material
        materialDAO = new MaterialDAOImpl();
        mat.setQuantidade((mat.getQuantidade() - this.quantidade));
        materialDAO.update(mat);
        
        preencheMaterialUsado();
    	
        }
		return "";
	}

	public List<SelectItem> getListaMaterial() {
		return listaMaterial;
	}

	public void setListaMaterial(List<SelectItem> listaMaterial) {
		this.listaMaterial = listaMaterial;
	}

	public String getMaterial() {
		return material;
	}

	public List<Material> getMaterialUtilizado() {
		return materialUtilizado;
	}

	public void setMaterialUtilizado(List<Material> materialUtilizado) {
		this.materialUtilizado = materialUtilizado;
	}
	public void setMaterial(String material) {
		this.material = material;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

}
